// 在函数内部动态导入XLSX

/**
 * 生成官方参考价格Excel模版
 * @returns {Blob} Excel文件的Blob对象
 */
export async function generateDishPriceTemplate() {
  // 动态导入XLSX
  const XLSX = await import('xlsx');
  
  // 检查XLSX是否正确加载
  if (!XLSX || !XLSX.utils) {
    console.error('XLSX库未正确加载');
    throw new Error('XLSX库未正确加载，请检查依赖安装');
  }
  // 创建模版数据
  const templateData = [
    {
      '菜品分类': '蔬菜类',
      '菜品名称': '白菜',
      '单位': '斤',
      '菜品价格': 2.5
    },
    {
      '菜品分类': '蔬菜类',
      '菜品名称': '土豆',
      '单位': '斤',
      '菜品价格': 3.0
    },
    {
      '菜品分类': '肉类',
      '菜品名称': '猪肉',
      '单位': '斤',
      '菜品价格': 25.0
    },
    {
      '菜品分类': '肉类',
      '菜品名称': '鸡肉',
      '单位': '斤',
      '菜品价格': 15.0
    },
    {
      '菜品分类': '水产类',
      '菜品名称': '草鱼',
      '单位': '斤',
      '菜品价格': 12.0
    },
    {
      '菜品分类': '调味品',
      '菜品名称': '生抽',
      '单位': '瓶',
      '菜品价格': 8.5
    }
  ];

  // 创建工作簿
  const workbook = XLSX.utils.book_new();
  
  // 创建工作表
  const worksheet = XLSX.utils.json_to_sheet(templateData);
  
  // 设置列宽
  const colWidths = [
    { wch: 15 }, // 菜品分类
    { wch: 20 }, // 菜品名称
    { wch: 10 }, // 单位
    { wch: 12 }  // 菜品价格
  ];
  worksheet['!cols'] = colWidths;

  // 添加工作表到工作簿
  XLSX.utils.book_append_sheet(workbook, worksheet, '官方参考价格模版');

  // 生成Excel文件
  const excelBuffer = XLSX.write(workbook, { type: 'array', bookType: 'xlsx' });
  
  // 创建blob
  return new Blob([excelBuffer], { 
    type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' 
  });
}

/**
 * 下载Excel文件
 * @param {Blob} blob - 文件blob对象
 * @param {string} fileName - 文件名
 */
export function downloadExcelFile(blob, fileName) {
  // 创建下载链接
  const url = window.URL.createObjectURL(blob);
  const link = document.createElement('a');
  link.href = url;
  link.download = fileName;
  document.body.appendChild(link);
  link.click();
  document.body.removeChild(link);
  window.URL.revokeObjectURL(url);
}

/**
 * 生成并下载官方参考价格模版
 */
export async function downloadDishPriceTemplate() {
  try {
    const blob = await generateDishPriceTemplate();
    const fileName = `官方参考价格模版_${new Date().toISOString().slice(0, 10)}.xlsx`;
    downloadExcelFile(blob, fileName);
  } catch (error) {
    console.error('生成Excel模版失败:', error);
    throw error;
  }
} 
